package com.hspedu.InnerClass;

import java.sql.SQLOutput;

/**
 * @Author Stringzhua
 * @Date 2024/3/6 16:55
 * description:匿名内部类的最课堂练习
 * 1.有一个铃声接口Bell,
 * 里面有一个ring方法
 *
 * 2.有一个手机类CellPhone,
 * 具有闹钟功能alarmclock,蚕食是Bell类型
 *
 * 3.测试手机类的闹钟功能,通过匿名内部类(对象)作为参数,
 * 打印懒猪起床了
 *
 * 4.再传入另一个匿名内部类(对象)
 * 打印小伙伴上课了
 */
public class InnerClassExercise02 {
    public static void main(String[] args) {
        Cellphone cellphone = new Cellphone();
        /*1.传递的是实现了Bell接口的匿名内部类
        * 2.匿名内部类重写了ring()方法
        * 3.alarmClock
        cellphone.alarmclock(new Bell() {
            @Override
            public void ring() {
                System.out.println("懒猪起床了...");
            }
        });
        */
        cellphone.alarmclock(new Bell() {
            @Override
            public void ring() {
                System.out.println("懒猪起床了...");
            }
        });
        cellphone.alarmclock(new Bell() {
            @Override
            public void ring() {
                System.out.println("小伙伴们上课了");
            }
        });
    }
}

interface Bell{
    void ring();
}

class Cellphone{
    public void alarmclock(Bell bell){//形参Bell接口类型
        System.out.println(bell.getClass());
        bell.ring();//动态绑定
    }
}
